#ifndef IMGUI_APP_H
#define IMGUI_APP_H

#include "dut/d3dApp.h"

#include "imgui/imgui.h"
#include "imgui/imgui_impl_dx11.h"
#include "imgui/imgui_impl_win32.h"

namespace ImGui
{

    struct App :public D3DApp
    {


        App(HINSTANCE hInstance, const D3DApp::Desc& desc);
        virtual ~App();
        int Run();                      // 运行程序，执行消息事件的循环

        // 框架方法。客户派生类需要重载这些方法以实现特定的应用需求
        virtual bool Init();                      // 该父类方法需要初始化窗口、Direct2D和Direct3D部分
        virtual void Update() = 0;   // 子类需要实现该方法，完成每一帧的更新
        virtual void Render() = 0;             // 子类需要实现该方法，完成每一帧的绘制
        virtual void Edit() = 0;

        virtual LRESULT MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
        // 窗口的消息回调函数
    protected:
        bool InitImGui();           // ImGui初始化



    };
}
#endif // D3DAPP_H